Electronic computing and communication systems continue to include a greater number of features and to increase in complexity. At the same time, electronic computing and communications systems tend to decrease in physical size and cost per function.
Rapid advances in semiconductor technology have enabled true "system-on-a-chip" designs. These complex designs may incorporate, for example, one or more processor cores, a digital signal processing core, several communications interfaces, and graphics support in application-specific logic. These extremely complex subsystems must communicate with one another. Significant new challenges arise in the integration, verification, and testing of such systems because efficient communication must take place between subsystems on a single complex chip as well as between chips on a system board.
One way to achieve efficient communication is to have a separate communication subsystem with individual functional blocks tying into the communication subsystem via a well-specified standard interface. One benefit of having a well-defined separation of the communication subsystem is that the functional blocks can be reused in other systems with a minimum of redesign.
One challenge in the integration, verification, and testing of modern electronic systems stems from the fact that modern electronic systems in many application areas have functionality, cost, and form-factor requirements that mandate the sharing of resources among multiple functional blocks. Examples of such shared resources are processors, memory and the communication subsystem itself. In such systems, the functional blocks typically possess different performance characteristics and requirements, and the communications system and shared resources must simultaneously satisfy total requirements in order for the entire system to meet its performance specifications. Different data flows between different functional blocks in the system have different performance requirements. Key requirements of such data flows are bandwidth and latency, and these can vary over several orders of magnitude between different data flows. Different data flows thus impose different quality-of-service requirements on the functional blocks and communications subsystem.
The traditional approach to the problem of meeting system requirements in the face of diverse quality-of-service requirements for different data flows has been to overdesign the shared resources or to provide dedicated resources for different data flows. For example, instead of designing a communications subsystem that can provide differential quality of service to three different data flows involving the memory system, designers instead build three separate communications systems to three separate ports of the memory system. While meeting the required performance characteristics, this design style may also make the system too large or too costly to be practical.
Another problem with today's approaches to designing systems with diverse quality of service requirements is that the methods employed do not lend themselves to analysis prior to actual implementation. Systems are built and then simulated to measure the attained performance of different data flows under different conditions. The result is that the designer can never be sure that the performance requirements are met under all conditions, since it is typically impractical to simulate the entire system under all possible conditions.
What is needed is a methodology for designing and integrating functional blocks and communication subsystems that yields a system with predictable and differential quality of service guarantees for different data flows while at the same time minimizing the size and cost of the components and the entire system.